---
title: SAIF.Business.Utilities operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Documentation Generation
last_reviewed: 2026-08-21
library: SAIF.Business.Utilities
reference_type: embedded
---

# SAIF.Business.Utilities operations and processes

This library exposes utility functions rather than multi-step BOF business operations (no `Criteria`/lifecycle methods, no transaction boundaries). This page is the operation catalog and cross-operation hub; each operation's detailed step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules |
| --- | --- | --- | --- | --- | --- |
| [Title-case a string](operations/title-case-a-string.md) | Convert an all-caps or inconsistently cased string into human-readable title case, preserving punctuation/whitespace. | Call to `TitleCase.ToTitleCase` or the `.ToTitleCase()` extension. | A `String` (possibly null/blank). | The title-cased `String`. | [BR-UTIL-001](business-rules.md#br-util-001-blank-or-null-input-passthrough), [BR-UTIL-002](business-rules.md#br-util-002-mixed-case-tokens-are-left-untouched), [BR-UTIL-003](business-rules.md#br-util-003-known-all-caps-abbreviations-stay-upper-case), [BR-UTIL-004](business-rules.md#br-util-004-known-connector-words-stay-lower-case), [BR-UTIL-005](business-rules.md#br-util-005-known-mixed-case-exception-words-are-normalized), [BR-UTIL-006](business-rules.md#br-util-006-ordinal-number-suffixes-are-lower-cased), [BR-UTIL-007](business-rules.md#br-util-007-mc-o'-style-prefixes-get-a-second-inner-capital), [BR-UTIL-008](business-rules.md#br-util-008-possessive-'s-suffix-is-preserved-in-original-case), [BR-UTIL-009](business-rules.md#br-util-009-first-character-of-output-is-always-forced-to-upper-case) |
| [Convert a number to English words](operations/convert-a-number-to-english-words.md) | Spell out a `Long` numeric value as English words (e.g., for amount-in-words rendering). | Call to `mdlTextConversion.NumberToText`. | A `Long` value. | The spelled-out `String`. | [BR-UTIL-010](business-rules.md#br-util-010-numbertotext-upper-bound-is-enforced), [BR-UTIL-011](business-rules.md#br-util-011-zero-renders-as-an-empty-string%2C-not-the-word-%22zero%22) |

## Process flow diagram
The following diagram visualizes the two primary operational flows exposed by this library.

```mermaid
flowchart TD
	Start([Caller invokes .ToTitleCase]) --> Guard{Input null/blank?}
	Guard -->|Yes| ReturnUnchanged([Return input unchanged])
	Guard -->|No| Split[Regex.Split into tokens]
	Split --> Classify[Classify + case each token]
	Classify --> Reassemble[Reassemble with original delimiters]
	Reassemble --> Suffix[Apply possessive 's suffix pass]
	Suffix --> ForceCap[Force first character upper case]
	ForceCap --> EndTC([Return title-cased string])

	StartNT([Caller invokes NumberToText]) --> Bound{n > 999,999,999,999,999?}
	Bound -->|Yes| Throw([Throw ApplicationException])
	Bound -->|No| Magnitude[Recurse by magnitude:<br>ones/teens, tens, hundreds,<br>thousands, millions, billions, trillions]
	Magnitude --> EndNT([Return spelled-out words])
```

## Failure and edge-case behavior
- `TitleCase.ToTitleCase`: null, empty, or whitespace-only input is returned unchanged rather than raising an error ([BR-UTIL-001](business-rules.md#br-util-001-blank-or-null-input-passthrough)).
- `mdlTextConversion.NumberToText`: values above 999,999,999,999,999 raise `ApplicationException` rather than truncating or wrapping ([BR-UTIL-010](business-rules.md#br-util-010-numbertotext-upper-bound-is-enforced)).

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Configuration settings](configuration.md)
- [API reference](api/index.md)

## Sources
- SAIF.Business.Utilities\TitleCase.vb
- SAIF.Business.Utilities\mdlTextConversion.vb
- .saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK007-analysis.md
